﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace Kokomo
{
	public static class AttributeExtensions
	{
		public static TAttribute GetCustomAttribute<TAttribute>(this Assembly target) where TAttribute : Attribute
		{
			if (target == null)
			{
				throw new ArgumentNullException("target");
			}

			TAttribute attribute = (TAttribute)Attribute.GetCustomAttribute(target, typeof(TAttribute));

			return attribute;
		}
		public static TAttribute GetCustomAttribute<TAttribute>(this MemberInfo target) where TAttribute : Attribute
		{
			if (target == null)
			{
				throw new ArgumentNullException("target");
			}

			TAttribute attribute = (TAttribute)Attribute.GetCustomAttribute(target, typeof(TAttribute));

			return attribute;
		}
		public static TAttribute[] GetCustomAttributes<TAttribute>(this MemberInfo target) where TAttribute : Attribute
		{
			if (target == null)
			{
				throw new ArgumentNullException("target");
			}

			TAttribute[] attribute = (TAttribute[])Attribute.GetCustomAttributes(target, typeof(TAttribute));

			return attribute;
		}
	}
}
